<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of eVoucherClass
 *
 * @author USUARIO
 */
class eVoucherClass {
    
    
    public function obtenerListaTarjetas($operation = "RECHARGE")
    {
        $arrayRespuesta = array("success"=>false,"message"=>"error","object"=>null);
        try 
        {
              $headers = array('Content-Type: application/octet-stream','Content-length: 10000000');
              /* -primero vamos a obtener la url que esta en el archivo de configuracion*/
              $urlSinParametros = sfConfig::get('app_list_cards_evouche');
              /* -segundo vamos a armar la url concatenando los parametros de user y password */      
              $urlList      = $urlSinParametros.$operation;
              /*aca obtengo la cookie guardada para realizar la transaccion*/
              $usuarioActual = sfContext::getInstance()->getUser()->getAttribute(sfConfig::get('app_name_session'));

              
              $handle   = curl_init();
              curl_setopt($handle, CURLOPT_URL,$urlList);
              curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
              curl_setopt($handle, CURLOPT_HEADER, 0); 
              curl_setopt($handle, CURLOPT_COOKIE, $usuarioActual->getJsessionId());
              curl_setopt($handle, CURLOPT_RETURNTRANSFER, true ); 
              curl_setopt($handle, CURLOPT_POST,false);
              $response = curl_exec($handle); 
              $listaParceada = json_decode($response);
              $arrayRespuesta['success'] = true;
              $arrayRespuesta['object'] = $listaParceada;
              curl_close($handle);
              
            // curl_exec :Ejecuta la sesión cURL que se le pasa como parámetro.
            // Esta funciójhhmn debe llamarse después de inicializar una sesión cURL y todas las opciones para la sesión están establecidas.
            
        } 
        catch (Exception $e)
        {
           $arrayRespuesta['message'] = $e->getMessage();
           curl_close($handle);
        }
        
        return $arrayRespuesta;
    }
    
     public function obtenerListaProducto($tarjeta,$operation = "RECHARGE")
    {
        $arrayRespuesta = array("success"=>false,"message"=>"error","object"=>null);
        try 
        {
              $headers = array('Content-Type: application/octet-stream','Content-length: 10000000');
              /* -primero vamos a obtener la url que esta en el archivo de configuracion*/
              $urlSinParametros = sfConfig::get('app_list_product');
              /* -segundo vamos a armar la url concatenando los parametros de user y password */      
              $urlList      = $urlSinParametros.$operation.'/'.$tarjeta;
              /*aca obtengo la cookie guardada para realizar la transaccion*/
              $usuarioActual = sfContext::getInstance()->getUser()->getAttribute(sfConfig::get('app_name_session'));
        
              
              $handle   = curl_init();
              curl_setopt($handle, CURLOPT_URL,$urlList);
              curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
              curl_setopt($handle, CURLOPT_HEADER, 0); 
              curl_setopt($handle, CURLOPT_COOKIE, $usuarioActual->getJsessionId());
              curl_setopt($handle, CURLOPT_RETURNTRANSFER, true ); 
              curl_setopt($handle, CURLOPT_POST,false);
              $response = curl_exec($handle); 
              $listaParceada = json_decode($response);
              $arrayRespuesta['success'] = true;
              $arrayRespuesta['object'] = $listaParceada;
              curl_close($handle);
            
        } 
        catch (Exception $e)
        {
           $arrayRespuesta['message'] = $e->getMessage();
           curl_close($handle);
        }
        
        return $arrayRespuesta;
    }
    
 public function generateEvoucher($cardNumber,$serviceId,$cantidad,$operacion="RECHARGE")
    {
        $arrayRespuesta = array("success"=>false,"message"=>"error","object"=>null);
        try
        {
              $headers = array('Content-Type: application/octet-stream','Content-length: 10000000');
              /* -primero vamos a obtener la url que esta en el archivo de configuracion*/
              $urlSinParametros = sfConfig::get('app_generate_evoucher');
              /* -segundo vamos a armar la url concatenando los parametros de user y password */
              $urlList      = $urlSinParametros.$operacion.'/'.$cardNumber.'/'.$serviceId.'/'.$cantidad;

              /*aca obtengo la cookie guardada para realizar la transaccion*/
              $usuarioActual = sfContext::getInstance()->getUser()->getAttribute(sfConfig::get('app_name_session'));

              $handle   = curl_init();
              curl_setopt($handle, CURLOPT_URL,$urlList);
              curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
              curl_setopt($handle, CURLOPT_HEADER, true);
              curl_setopt($handle, CURLOPT_COOKIE, $usuarioActual->getJsessionId());
              curl_setopt($handle, CURLOPT_RETURNTRANSFER, true );
              curl_setopt($handle, CURLOPT_POST,true);
              $response = curl_exec($handle);

              $matches = array();
              preg_match('#HTTP/\d+\.\d+ (\d+)#', $response, $matches);


              $respuestaSuccess = $matches[1];

              /*si la respuesta es OK*/
              if($respuestaSuccess==200 || $respuestaSuccess==100 )
              {
                  $arrayRespuesta['success'] = true;

              }
              else
              {
                  $respuestaError = $this->getMensageError($response);
                  $arrayRespuesta['object'] = $respuestaError['code'];
              }
              curl_close($handle);
        }
        catch (Exception $e)
        {
           $arrayRespuesta['message'] = $e->getMessage();
           curl_close($handle);
        }

        return $arrayRespuesta;

    }
    
    private function getMensageError($response)
    {
   
            $arrayRespuesta = array("success"=>true,"message"=>"error","code"=>-1);
            $matches = array();
            preg_match_all ("/<title>(.*)<\/title>/", $response, $matches);
           //$this->redirect("@respuesta?respuesta=".$matches);
            $respuestaError =  $matches[1][0]; 
            echo  $respuestaError;       
            if($respuestaError=="400 103")
            {
                $arrayRespuesta['message'] = "deposito no encontrado";
                $arrayRespuesta['code'] = 103;                
            }
            elseif($respuestaError=="400 104")
            {
                $arrayRespuesta['message'] = "deposito es EL";
                $arrayRespuesta['code'] = 104;    
            }
            elseif($respuestaError=="400 105")
            {
                $arrayRespuesta['message'] = "valor de MR es negativo";
                $arrayRespuesta['code'] = 105;    
            }
            elseif($respuestaError=="400 106")
            {
                $arrayRespuesta['message'] = "cantidad de símbolos después de la coma es incorrecta";
                $arrayRespuesta['code'] = 106;    
            }
            elseif($respuestaError=="400 107")
            {
                $arrayRespuesta['message'] = "superado el valor máximo de la RR";
                $arrayRespuesta['code'] = 107;    
            }
            elseif($respuestaError=="400 108")
            {
                $arrayRespuesta['message'] = "cuenta de cliente no encontrada";
                $arrayRespuesta['code'] = 108;    
            }
            elseif($respuestaError=="400 109")
            {
                $arrayRespuesta['message'] = "faltan fondos en la cuenta para la creación de la RR";
                $arrayRespuesta['code'] = 109;    
            }
            
            elseif($respuestaError=="400 110")
            {
                $arrayRespuesta['message'] = "faltan fondos en la cuenta para la creación del RtR";
                $arrayRespuesta['code'] = 110;    
            }            
            elseif($respuestaError=="400 113")
            {
                $arrayRespuesta['message'] = "no hay privilegios de acceso para la creacion de los pedidos para MR en las tarjetas de otro portador";
                $arrayRespuesta['code'] = 113;    
            }
            else
            {
                $arrayRespuesta['message'] = "ups, algo se rompio";
                $arrayRespuesta['code'] = 88; 
            }
            return $arrayRespuesta;
        
    }

   
}

?>
